home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Sounds Terrific 2
/
Sounds Terrific II (1996)(Weird Science)(Disc 1 of 2)[Amiga-PC].iso
/
archives
/
amiga
/
tracker_4_31.lzh
/
tracker
/
Amiga
/
amiga.h
next >
Wrap
C/C++ Source or Header
|
1995-01-13
|
3KB
|
142 lines
/* amiga/amiga.h
vi:ts=3 sw=3:
*/
/* $Id: amiga.h,v 1.16 1995/01/13 13:31:35 espie Exp espie $
* $Log: amiga.h,v $
* Revision 1.16 1995/01/13 13:31:35 espie
* *** empty log message ***
*
*
* Revision 1.15 1994/01/09 04:49:18 Espie
* File requester !
* Added pause gadget.
* Uncentralized event handling using event management functions.
* Scroller back calls.
* Fully working asynchronous interface.
* Problem with output ? Still to fix !
* new TYPE_SYNC_DO.
* Protos for obtain_message, send.
*
*/
#define forever for(;;)
/* list scanning.
* next is needed: with it, we can actually unlink the node while scanning
* the current list. Type is provided to avoid type-casting errors in
* SCANLIST expansion.
*/
#define SCANLIST(node, next, list, type) \
for((node) = (type)((struct MinList *)(list))->mlh_Head; \
(next) = (type)((struct MinNode *)(node))->mln_Succ; \
(node) = (next))
#define PUBLIC_PORT_NAME "Debug this tracker"
/* number of messages to allocate */
#define BUFFER_SIZE 500
/* (total size: 500 * 32 = 16000 bytes, corresponding to roughly
* 1.5 second */
struct ext_message
{
struct Message msg;
#define TYPE_DIE 0
#define TYPE_WAIT 1
#define TYPE_FLUSH_CHANNEL 2
#define TYPE_SETUP 3
#define TYPE_CHANGE 4
#define TYPE_FLUSH_BUFFER 5
#define TYPE_COMM 6
#define TYPE_SYNC 7
#define TYPE_SYNC_DO 8
#define TYPE_INVALID 9
#define TYPE_PAUSE 10
#define TYPE_UNPAUSE 11
int type;
union
{
struct
{
void (*func)(VALUE p);
VALUE p;
} hook;
struct
{
ULONG high;
ULONG low;
} time;
struct
{
void *start;
ULONG length;
} sample;
struct
{
USHORT channel_mask;
USHORT cycle;
USHORT pitch;
USHORT volume;
} info;
struct
{
struct MsgPort *port;
struct Task *task;
} comm;
} data;
};
/* the audio server entry point */
XT void subtask P((struct ext_message *msg));
/* Standard functions of the client */
/* mes = obtain_message():
* obtain a message we can send to the server
* (this call may block, but usually not for long)
*/
XT struct ext_message *obtain_message P((void));
/* mes = await_type(type):
* wait for the return of the next message of a given type
* and returns it. Synchronization with the server.
*/
XT struct ext_message *await_type P((int type));
/* send(msg, type):
* send msg to the server, filling type along the way
*/
XT void send P((struct ext_message *msg, int type));
XT void add_scroller P((char *s));
XT struct Screen *obtain_pubscreen(void);
XT void set_break(void);
XT void check_events(void);
XT void await_events(void);
XT void install_signal_handler(int signal, void (*f)(GENERIC data), GENERIC data);
XT void remove_signal_handler(int signal);
XT void install_req_handler(ULONG mask, void (*req_f)(ULONG received));
XT void remove_req_handler(void);
struct amiganame
{
struct MinNode n;
int i;
char s[0];
};
/* prototypes for the file requester */
XT void launch_requester P((void));
XT void requested_file P((struct amiganame *name));
/* V39 function */
XT void set_busy_pointer P((BOOL maybe));